只是无法得到这一个,谷歌搜索也没有多大帮助..
首先我知道:给定一个字符串和一个正则表达式,如何用替换字符串替换所有匹配此正则表达式的字符串?在String类中使用replaceAll()方法.
现在我无法做到的事情.我现在在我的代码中的正则表达式是[^ a-zA-Z],我确信这个正则表达式肯定会有一个范围.只有一些字符可能会添加到列表中.在下面的代码中我需要输出的是Worksheet + blah但是我使用replaceAll()得到的是Worksheet ++++ blah
String homeworkTitle = "Worksheet%#5_blah"; String unwantedCharactersRegex = "[^a-zA-Z]"; String replacementString = "+"; homeworkTitle = homeworkTitle.replaceAll(unwantedCharactersRegex,replacementString); System.out.println(homeworkTitle);
实现我希望的输出的方法是什么?我在这里缺少任何Java方法吗?
[^a-zA-Z]+
会做得很好.
你需要一个贪婪的量词来匹配尽可能多的非字母字符,并将所有匹配替换为一个'+'(a - 默认情况下 - 贪心量词)
注意:[^a-zA-Z]+?
会使'+'量词变得懒惰,并且会给你相同的结果[^a-zA-Z]
,因为它一次只匹配一个非字母字符.